package service;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import bean.resp.Article;
import bean.resp.NewsMessage;
import bean.resp.TextMessage;
import util.MessageUtil;




public class CoreService {  
    /** 
     * 处理微信发来的请求 
     *  
     * @param request 
     * @return 
     */  
    public static String processRequest(HttpServletRequest request) {  
        String respMessage = null;  
        try {  
            // 默认返回的文本消息内容  
            String respContent = "";  
  
            // xml请求解析  
            Map<String, String> requestMap = MessageUtil.parseXml(request);  
  
            // 发送方帐号（open_id）  
            String fromUserName = requestMap.get("FromUserName");  
            // 公众帐号  
            String toUserName = requestMap.get("ToUserName");  
            // 消息类型  
            String msgType = requestMap.get("MsgType"); 
            String content = requestMap.get("Content");
  
            // 回复文本消息  
            TextMessage textMessage = new TextMessage();  
            textMessage.setToUserName(fromUserName);  
            textMessage.setFromUserName(toUserName);  
            textMessage.setCreateTime(new Date().getTime());  
            textMessage.setMsgType(MessageUtil.RESP_MESSAGE_TYPE_TEXT);  
            textMessage.setFuncFlag(0);  
  
            // 文本消息  
            //TODO :规则改成可配置
            if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_TEXT)) {
            	if(content.contains("你好")){
            		respContent="Hi！ 亲，终于等到你！欢迎走进[合肥百大集团]的世界，关注我，超给力，超精彩哦！";
            	}else if(content.contains("电话")||content.contains("投诉")||content.contains("建议")){
            		respContent = "Hi！ 亲，感谢您的关注和耐心等待！小百暂时不在线，请致电合肥百大集团心悦服务热线：400-88-00-417";
                }else if (content.contains("合百")||content.contains("合百珠宝")||content.contains("报名")){
                	respContent="欢迎亲参加百大集团“合百珠宝”形象代言人大赛，点击下方菜单“合百珠宝”——“大赛报名”进入报名，报名选手需填写真实姓名并提供佩戴珠宝、五官轮廓清晰的个人写真照片一张，感谢您对本次活动的支持与参与！";
                }else if(content.contains("招聘")){
                	NewsMessage newsMessage = new NewsMessage();
                	Article a = new Article();
                	a.setTitle("合肥百大集团2016年校园行招聘启事");
                	a.setDescription("合肥百大集团招兵买马啦！有兴趣的小伙伴赶紧加入我们吧！");
                	a.setPicUrl("http://pre.bd-ego.com/img/zhaopin-1.jpg");
                	a.setUrl("http://www.hfbh.com.cn/human_detail.asp?id=7068");
                	List<Article> articles = new ArrayList<Article>();
                	articles.add(a);
                	newsMessage.setToUserName(fromUserName);  
                	newsMessage.setFromUserName(toUserName);  
                	newsMessage.setCreateTime(new Date().getTime());  
                	newsMessage.setMsgType(MessageUtil.RESP_MESSAGE_TYPE_NEWS);    
                	newsMessage.setArticles(articles);
                	newsMessage.setArticleCount(1);
                	respMessage = MessageUtil.newsMessageToXml(newsMessage);
                	String s = respMessage.replace("ArticleCount><![CDATA[", "ArticleCount>");
                	String s1 = s.replace("]]></ArticleCount", "</ArticleCount");
                	System.err.println(s1);
                	return s1;
                } 
            }  
            // 图片消息  
            else if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_IMAGE)) {  
                respContent = "您发送的是图片消息！";  
            }  
            // 地理位置消息  
            else if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_LOCATION)) {  
                respContent = "您发送的是地理位置消息！";  
            }  
            // 链接消息  
            else if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_LINK)) {  
                respContent = "您发送的是链接消息！";  
            }  
            // 音频消息  
            else if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_VOICE)) {  
                respContent = "您发送的是音频消息！";  
            }  
            // 事件推送  
            else if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_EVENT)) {  
                // 事件类型  
                String eventType = requestMap.get("Event");  
                // 订阅  
                if (eventType.equals(MessageUtil.EVENT_TYPE_SUBSCRIBE)) {  
                	respContent="Hi！ 亲，终于等到你！欢迎走进[合肥百大集团]的世界，关注我，超给力，超精彩哦！"; 
                }  
                // 取消订阅  
                else if (eventType.equals(MessageUtil.EVENT_TYPE_UNSUBSCRIBE)) {  
                    // TODO 取消订阅后用户再收不到公众号发送的消息，因此不需要回复消息  
                }  
                // 自定义菜单点击事件  
                else if (eventType.equals(MessageUtil.EVENT_TYPE_CLICK)) {  
                    // TODO 自定义菜单权没有开放，暂不处理该类消息  
                }  
            }  
  
            textMessage.setContent(respContent); 
            
            respMessage = MessageUtil.textMessageToXml(textMessage);  
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
  
        return respMessage;  
    }  
}  
